#!/usr/bin/env ruby
ROOT = File.dirname(__FILE__)
require ROOT + '/../config/environment'

require 'downloader.rb'
require 'scrapers.rb'


reintentos = 0

sitio = Sitio.find(1)

conexion = Downloader.new(sitio.servidor, sitio.pagina_inicio, sitio.datos_validacion)
puts "Inicializacion -> Bytes leidos: #{conexion.trafico}"

puts "Numero Temas a refrescar: #{Tema.find(:all).size}"

Tema.find(:all, :order => "titulo").each do |tema|
  if tema.habilitar and ( ( tema.updated_at < 60.minutes.ago ) or ( tema.titulo == "Mensaje de los foros" ) ) then
    puts "\n#{tema.direccion}"

    pagina = conexion.leer_pagina tema.direccion
    open(ROOT + '/../tmp/web/tema-' + tema.identificador + ".html", "w") do |file|
      file << pagina
    end
    
    titulo = Titulo.scrape pagina
    puts "#{tema.titulo} -> Bytes leidos: #{conexion.trafico}\n"

    if titulo == "Mensaje de los foros" then
      puts "Recibido 'Mensaje de los foros' como titulo de la pagina"
      reintentos += 1
      if reintentos > 10 then
        exit
      end
      next
    end

    elinks = Elinks.scrape pagina
    if ! elinks.nil? then
      elinks_anteriores = tema.elinks

      elinks.each do |nuevo_elink|
        encontrado = false

        elinks_anteriores.each do |elink|
          if elink.hash == nuevo_elink.split("|")[4] then
            if elink.size == nuevo_elink.split("|")[3] then
              encontrado = true
              break
            end
          end
        end

        if not encontrado then
          puts "insertando: #{CGI::unescape(nuevo_elink)}"
          Elink.create :elink => CGI::unescape(nuevo_elink), :tema_id => tema.id
        end
      end
    end

    tema.save
  end
end

puts "Fin"
